package produto.manager;

import geral.manager.GenericManager;
import geral.manager.UtilManager;
import geral.util.FacesUtil;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped;
import javax.inject.Inject;
import javax.inject.Named;

import br.com.sgc.entities.produto.TipoProduto;
import br.com.sgc.session.GenericSession;

@Named
@ConversationScoped
public class TipoProdutoManager extends GenericManager implements Serializable{
	
	private static final long serialVersionUID = -6779245225122792752L;

	@Inject private UtilManager utilManager;
	
	@EJB private GenericSession<TipoProduto> tipoProdutoSession;
	
	private TipoProduto tipoProduto = new TipoProduto();
	
	private List<TipoProduto> list = new ArrayList<TipoProduto>();
	
	private Boolean showPanelCadastro;

	
	public String list(){
		list = tipoProdutoSession.findAll(TipoProduto.class, utilManager.getSegurancaManager().getUsuarioLogado().getClinica().getId());
		showPanelCadastro = false;
		return "formTipoProduto";
	}
	
	public String prepareSave(){
		showPanelCadastro = true;
		tipoProduto = new TipoProduto();
		return "formTipoProduto";
	}
	
	public String save(){
		try {
			tipoProduto.setClinica(utilManager.getSegurancaManager().getUsuarioLogado().getClinica());
			tipoProdutoSession.save(tipoProduto);
			FacesUtil.mensInfo("Tipo de Produto salvo com sucesso");
			tipoProduto = new TipoProduto();
			return list();
		} catch (Exception e) {
			e.printStackTrace();
			FacesUtil.mensErro(e.getMessage());
			return null;
		}
	}
	
	public String prepareUpdate(){
		tipoProduto = tipoProdutoSession.findById(TipoProduto.class, tipoProduto.getId(), true);
		showPanelCadastro = true;
		return "formTipoProduto";
	}
	
	public String update(){
		try {
			tipoProduto.setClinica(utilManager.getSegurancaManager().getUsuarioLogado().getClinica());
			tipoProdutoSession.update(tipoProduto);
			tipoProduto = new TipoProduto();
			FacesUtil.mensInfo("Tipo de Produto atualizado com sucesso");
			return list();
		} catch (Exception e) {
			FacesUtil.mensErro(e.getMessage());
			return null;
		}
	}

	public TipoProduto getTipoProduto() {
		return tipoProduto;
	}

	public void setTipoProduto(TipoProduto tipoProduto) {
		this.tipoProduto = tipoProduto;
	}

	public List<TipoProduto> getList() {
		return list;
	}

	public void setList(List<TipoProduto> list) {
		this.list = list;
	}

	public Boolean getShowPanelCadastro() {
		return showPanelCadastro;
	}

	public void setShowPanelCadastro(Boolean showPanelCadastro) {
		this.showPanelCadastro = showPanelCadastro;
	}

	public GenericSession<TipoProduto> getTipoProdutoSession() {
		return tipoProdutoSession;
	}

	public void setTipoProdutoSession(GenericSession<TipoProduto> tipoProdutoSession) {
		this.tipoProdutoSession = tipoProdutoSession;
	}
}
